home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / tttdem51.zip / NESTDEM2.PAS < prev    next >
Pascal/Delphi Source File  |  1989-01-31  |  11KB  |  250 lines

  1. Program NestTTT5_Demo_1;
  2.  
  3. {Similar to NestDem1 except a user hook was added}
  4.  
  5. uses CRT,FastTTT5,DOS,WinTTT5,KeyTTT5,StrnTTT5,NestTTT5;
  6.  
  7.  
  8. var
  9.   Hyphens,
  10.   EndProgram: Boolean;
  11.   Main_Menu,
  12.   Long_menu,
  13.   File_Menu,                       {dummy menu is a short cut to represent}
  14.   Utility_Menu,                    {all the other menus that would be used}
  15.   Dummy_Menu:Nest_Menu;            {in a large system.                    }
  16.  
  17.  
  18.   Procedure SetUp_Menus;
  19.   begin
  20.       Initialize_Menu(Main_Menu,'Sprint',0,0);  {14}
  21.       Initialize_Menu(File_Menu,'File',22,12);
  22.       Initialize_Menu(Utility_Menu,'Utility',19,13);
  23.       Initialize_Menu(Long_Menu,'Potpourri',19,10);
  24.       Initialize_Menu(Dummy_Menu,'A N Other',0,0);
  25.   end; {of proc SetUp_Menus}
  26.  
  27.   Procedure Define_Main_Menu;
  28.   {}
  29.   begin
  30.       Add_Topic(Main_Menu,'File       *  Alt-F',true,#161,101,@File_Menu);
  31.       Add_Topic(Main_Menu,'Edit'              ,true,#0  ,0,@Dummy_Menu);
  32.       Add_Topic(Main_Menu,'-'                 ,true,#0  ,0  ,nil);
  33.       Add_Topic(Main_Menu,'Insert'            ,true,#0,103,@Dummy_Menu);
  34.       Add_Topic(Main_Menu,'Typestyle'         ,true,#0,104,@Dummy_Menu);
  35.       Add_Topic(Main_Menu,'Style'             ,true,#0,105,@Dummy_Menu);
  36.       Add_Topic(Main_Menu,'Layout'            ,true,#0,0,@Dummy_Menu);
  37.       Add_Topic(Main_Menu,'-'                 ,true,#0,0,nil);
  38.       Add_Topic(Main_Menu,'Print'             ,false,#0,107,@Dummy_Menu);
  39.       Add_Topic(Main_Menu,'Window'            ,true,#0,108,@Dummy_Menu);
  40.       Add_Topic(Main_Menu,'Utilities  *  Alt-U'  ,true,#150,109,@Utility_Menu);
  41.       Add_Topic(Main_Menu,'Customize'         ,true,#0,110,@Dummy_Menu);
  42.       Add_Topic(Main_Menu,'-'                 ,true,#0,0,nil);
  43.       Add_Topic(Main_Menu,'Quit'              ,true,#173,999,nil);
  44.   end; {of proc Define_Main_Menu}
  45.  
  46.   Procedure Define_File_Menu;
  47.   {}
  48.   begin
  49.       Add_Topic(File_Menu,'New'            ,true,#0,201,nil);
  50.       Add_Topic(File_Menu,'Open'           ,true,#0,202,nil);
  51.       Add_Topic(File_Menu,'Close'          ,true,#0,203,nil);
  52.       Add_Topic(File_Menu,'Insert'         ,true,#0,204,nil);
  53.       Add_Topic(File_Menu,'-'              ,true,#0,0,nil);
  54.       Add_Topic(File_Menu,'Save'           ,true,#0,205,nil);
  55.       Add_Topic(File_Menu,'Write As'       ,true,#0,206,nil);
  56.       Add_Topic(File_Menu,'Revert to Saved',true,#0,207,nil);
  57.       Add_Topic(File_Menu,'-'              ,true,#0,0,nil);
  58.       Add_Topic(File_Menu,'Translate'      ,true,#0,208,nil);
  59.       Add_Topic(File_Menu,'File Manager'   ,true,#0,209,nil);
  60.       Add_Topic(File_Menu,'Pick from List' ,true,#0,210,nil);
  61.   end; {of proc Define_File_Menu}
  62.  
  63.   Procedure Define_Long_Menu;
  64.   {}
  65.   begin
  66.       Add_Topic(Long_Menu,'bottom of File' ,true,#0,71,nil);
  67.       Add_Topic(Long_Menu,'Bottom of screen',true,#0,72,nil);
  68.       Add_Topic(Long_Menu,'case Rotate'    ,true,#0,73,nil);
  69.       Add_Topic(Long_Menu,'case Switch'     ,true,#0,74,nil);
  70.       Add_Topic(Long_Menu,'center Tab'     ,true,#0,75,nil);
  71.       Add_Topic(Long_Menu,'Decimal tab'    ,true,#0,76,nil);
  72.       Add_Topic(Long_Menu,'delete Line'    ,true,#0,77,nil);
  73.       Add_Topic(Long_Menu,'delete Word'    ,true,#0,78,nil);
  74.       Add_Topic(Long_Menu,'delete Sentence',true,#0,79,nil);
  75.       Add_Topic(Long_Menu,'delete Paragraph',true,#0,80,nil);
  76.       Add_Topic(Long_Menu,'delete End of line' ,true,#0,81,nil);
  77.       Add_Topic(Long_Menu,'reformat Document',true,#0,82,nil);
  78.       Add_Topic(Long_Menu,'eXchange cases'    ,true,#0,73,nil);
  79.       Add_Topic(Long_Menu,'lookup Zip'     ,true,#0,74,nil);
  80.       Add_Topic(Long_Menu,'Underline'      ,true,#0,75,nil);
  81.       Add_Topic(Long_Menu,'Italicize'      ,true,#0,76,nil);
  82.       Add_Topic(Long_Menu,'go Home'        ,true,#0,77,nil);
  83.       Add_Topic(Long_Menu,'Cancel undo'    ,true,#0,78,nil);
  84.   end; {of proc Define_Long_Menu}
  85.  
  86.   Procedure Define_Utility_Menu;
  87.   {}
  88.   begin
  89.       Hyphens := true;
  90.       Add_Topic(Utility_Menu,'Spelling'    ,true,#0,901,nil);
  91.       Add_Topic(Utility_Menu,'Hyphenation  *  On ' ,true,#0,902,nil);
  92.       Add_Topic(Utility_Menu,'Thesaurus'   ,true,#0,903,nil);
  93.       Add_Topic(Utility_Menu,'Glossary'    ,true,#0,904,nil);
  94.       Add_Topic(Utility_Menu,'-'           ,true,#0,0,nil);
  95.       Add_Topic(Utility_Menu,'Arrange-Sort',true,#0,905,nil);
  96.       Add_Topic(Utility_Menu,'Line Drawing',true,#0,906,nil);
  97.       Add_Topic(Utility_Menu,'-'           ,true,#0,0,nil);
  98.       Add_Topic(Utility_Menu,'Potpourri    *',true,#0,907,@Long_Menu);
  99.       Add_Topic(Utility_Menu,'QuickCard'   ,true,#0,908,nil);
  100.       Add_Topic(Utility_Menu,'Macros'      ,true,#0,909,nil);
  101.       Add_Topic(Utility_Menu,'-'           ,true,#0,0,nil);
  102.       Add_Topic(Utility_Menu,'Back Up Demo *',true,#0,910,nil);
  103.   end; {of proc Define_Utility_Menu}
  104.  
  105.   Procedure Define_Dummy_Menu;
  106.   {}
  107.   begin
  108.       Add_Topic(Dummy_Menu,'Ignite'      ,true,#0,801,nil);
  109.       Add_Topic(Dummy_Menu,'Check Boosters',true,#0,802,nil);
  110.       Add_Topic(Dummy_Menu,'Fire Retros' ,true,#0,803,nil);
  111.       Add_Topic(Dummy_Menu,'Shutdown'    ,true,#0,804,nil);
  112.       Add_Topic(Dummy_Menu,'-'           ,true,#0,0,nil);
  113.       Add_Topic(Dummy_Menu,'Launch'      ,true,#0,805,nil);
  114.       Add_Topic(Dummy_Menu,'Remove Suit',false,#0,806,nil);
  115.       Add_Topic(Dummy_Menu,'-'           ,true,#0,0,nil);
  116.       Add_Topic(Dummy_Menu,'Abort Mission',true,#0,807,nil);
  117.       Add_Topic(Dummy_Menu,'Panic'       ,true,#0,808,nil);
  118.   end; {of proc Define_Dummy_Menu}
  119.  
  120.   Procedure Paint_Screen;
  121.   {makes the screen look like a word processor}
  122.   begin
  123.       ClearText(1,1,80,25,lightgray,blue);
  124.       WriteAt(1,25,black,lightgray,
  125.       Padleft('Press F10 or / for menu.             Alt-X   to quit',80,' '));
  126.       Plainwrite(1,1,
  127.       '[     T     1         2         3         4         5         6         7     ]');
  128.       Plainwrite(5,3,'Imagine you have written a wordprocessing program and you want');
  129.       PlainWrite(5,4,'to give the program a full and powerful menu system. The NestTTT');
  130.       PlainWrite(5,5,'unit will give you all the power you need and more!');
  131.       PlainWrite(5,7,'For starters, press the F10 key or the slash key, and roam around');
  132.       Plainwrite(5,8,'the menu a little. Features include: capital letter selection, ');
  133.       Plainwrite(5,9,'optional HotKey selection, point and shoot (with full mouse support),');
  134.       Plainwrite(5,10,'non-selectable topics, line separators, auto positioning of menus and');
  135.       PlainWrite(5,11,'sub menus. The list goes on and on...');
  136.       PlainWrite(5,13,'When a menu "system" has been defined, it''s easy to call up any of the');
  137.       PlainWrite(5,14,'nested menus and bypass all the parent menus. For example, press Alt-U');
  138.       Plainwrite(5,15,'while no menu is on display - the Utility menu will automatically pop-up');
  139.       Plainwrite(5,16,'at the top level.');
  140.       PlainWrite(5,18,'All of the topics that are highlighted with an asterisk "*" are designed');
  141.       Plainwrite(5,19,'to illustrate some of the features of the menu. For example, select the');
  142.       Plainwrite(5,20,'Utility option from the main menu, or press Alt-U, and select the Potpourri');
  143.       Plainwrite(5,21,'topic. This is a menu that exceeds the no. of display lines - the menu');
  144.       Plainwrite(5,22,'will automatically scroll the topics. Also, select the Hyphenation topic');
  145.       Plainwrite(5,23,'to see a topic that can switch between two or more displays.');
  146.   end; {of proc Paint_Screen}
  147.  
  148.    Procedure Dummy_Activity(var Finish:byte);
  149.    {Saves writing a lot of real life procedures for the demo}
  150.    begin
  151.        TempMessageBox(20,5,white,red,3,'Just imagine I did something!');
  152.        Finish := DontClear;   {return to same place in the menu}
  153.    end; {of proc Dummy_Activity}
  154.  
  155.    {$F+}
  156.    Procedure Menu_Hook(var Ch:char; Code : integer);
  157.    begin
  158.        Case Ch of
  159.        #173: begin
  160.                  Reset_StartUp_Mode;
  161.                  Halt;
  162.              end;
  163.        end;
  164.    end;
  165.    {$F-}
  166.  
  167.  
  168. {$F+}
  169.    Procedure Action(Var Code: integer; var Finish:byte);
  170.    {This is the main procedure the controls the execution of all
  171.     the menu options.}
  172.    begin
  173.        Case Code of
  174.        902: begin
  175.                 If Hyphens then
  176.                    Modify_Topic_name(Utility_Menu,2,'Hyphenation  *  Off')
  177.                 else
  178.                    Modify_Topic_name(Utility_Menu,2,'Hyphenation  *  On ');
  179.                 Hyphens := not Hyphens;
  180.                 Finish := RefreshTopic;
  181.             end;
  182.        910: begin
  183.                 TempMessageBox(20,5,white,red,3,'We will back up one level');
  184.                 Finish := ClearCurrent;
  185.             end;
  186.        999: begin
  187.                 sound(1000);delay(2);nosound;
  188.                 Endprogram := true;
  189.                 Finish := ClearAll;
  190.             end;
  191.        else Dummy_Activity(Finish);
  192.        end;  {case}
  193.    end; {of proc Action}
  194. {$F-}
  195.  
  196.    Procedure Menu_Loop;
  197.    {}
  198.    var Ch : char;
  199.    begin
  200.        EndProgram := false;
  201.        Repeat
  202.             Ch := Getkey;
  203.             Case Ch of
  204.             #178,                               {Alt-M}
  205.             '/',
  206.             #196 :  Show_Nest(Main_menu);       {F10}
  207.             #161 :  Show_Nest(File_Menu);       {Alt F}
  208.             #150 :  Show_Nest(Utility_menu);    {Alt U}
  209.             #027,
  210.             #173 :  Endprogram := true;         {Alt X}
  211.             end;
  212.       Until   EndProgram;
  213.    end; {of proc Menu_Loop}
  214.  
  215.  
  216. begin                                         {The main program}
  217.     ClearText(1,1,80,25,white,black);
  218.     SetUp_menus;
  219.     Define_Main_Menu;
  220.     Define_File_menu;
  221.     Define_Utility_Menu;
  222.     Define_Dummy_Menu;
  223.     Define_Long_Menu;
  224.     Assign_Despatcher(Action);
  225.     With NTTT do             {optionally modify default colors etc.}
  226.     begin
  227.         AllowEsc := false;
  228.         LeftSide := false;
  229.         BoxFCol := black;
  230.         BoxBCol := lightgray;
  231.         CapFCol := white;
  232.         BacCol := lightgray;
  233.         NorFCol := Black;
  234.         LoFCol := blue;
  235.         HiFCol := Lightgray;
  236.         HiBCol := blue;
  237.         LeftChar := ' ';
  238.         RightChar := ' ';
  239.         Hook := Menu_Hook;
  240.     end;
  241.     Paint_Screen;
  242.     Menu_Loop;
  243.     Delete_All_Topics(Utility_Menu);
  244.     Delete_All_Topics(File_Menu);
  245.     Delete_All_Topics(Main_Menu);
  246.     Delete_All_Topics(Dummy_Menu);
  247.     Reset_StartUp_Mode;
  248. end.
  249.  
  250.